package com.naiterui.ehp.ps.sms.config;

import javax.annotation.PostConstruct;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.naiterui.ehp.ps.sms.bean.Template;
import com.naiterui.ehp.ps.sms.service.ITemplateService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @author guoyongxiang
 * @date 2021/6/2 11:19
 * @since 1.0.0
 */
@Slf4j
@Component
public class InitBean {

    @Autowired
    private ITemplateService templateService;

    @Value("${naiterui.sms.cloopen-template-id}")
    private String coopenTemplateId;
    @Value("${naiterui.sms.cloopen-is-general-templated}")
    private String isGeneralTemplated;
    @Value("${naiterui.sms.cloopen-detail-template-id}")
    private String cloopenDetailTemplateId;
    /**
     * 初始化容联短信通道基础短信模板ID
     */
    @PostConstruct
    public void initSmsTemplate() {

        if(StringUtils.isBlank(coopenTemplateId)){
            log.info("初始化短信模板,模板ID为空 coopenTemplateId:{}", coopenTemplateId);
            return;
        } ;
        if (BooleanUtil.toBoolean(isGeneralTemplated)) { // 通用模板
            log.info("初始化短信模板 coopenTemplateId:{}", coopenTemplateId);
            templateService.updateDefaultCoopenTemplateId(coopenTemplateId);
        } else { // 非通用模板
            if (StringUtils.isBlank(cloopenDetailTemplateId)) {
                log.info("初始化短信明细模板,模板ID为空 cloopenDetailTemplateId:{}", cloopenDetailTemplateId);
                return;
            }
            List<String> detailTemplateIds = Arrays.asList(cloopenDetailTemplateId.split(","));
            List<String> msgTemplateIds = Arrays.asList(coopenTemplateId.split(","));
            Map<String, String> templateMap = detailTemplateIds.stream()
                .collect(Collectors.toMap(key -> key, key -> msgTemplateIds.get(detailTemplateIds.indexOf(key))));
            log.info("初始化模板参数     templateMap={} ", templateMap.toString());
            templateMap.forEach((k, v) -> {
                Template template = templateService.getTemplateByTemplateId(k);
                if (ObjectUtil.isEmpty(template)) {
                    log.error("初始化短信模板失败，明细模版未设置。 templateId:{}", k);
                    return;
                }
                template.setMsgTemplateId(v);
                templateService.updateTemplateForMsg(template);
            });
        }
    }

}
